package com.wicket.okrframework.integration.dto;

import com.wicket.okrframework.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
import lombok.Data;

@Data
public class FrameworkSpaceDto extends BaseDto implements Serializable {

  /**
   * 空间ID:
   */
  @ApiModelProperty("空间ID")
  private String spaceId;

  /**
   * 空间名称:
   */
  @ApiModelProperty("空间名称")
  private String spaceName;

  /**
   * 头像logo:
   */
  @ApiModelProperty("头像logo")
  private String spaceLogo;

  /**
   * 空间编号:
   */
  @ApiModelProperty("空间编号")
  private String organizationNumber;

  /**
   * 是否是平台:
   */
  @ApiModelProperty("是否是平台")
  private String platformType;

  /**
   * 是否失效:
   */
  @ApiModelProperty("是否失效")
  private String isInvalid;

  /**
   * 创建人就职记录ID:
   */
  @ApiModelProperty("创建人就职记录ID")
  private String createInductionId;

  /**
   * 创建时间:
   */
  @ApiModelProperty("创建时间")
  private Date createTime;

  /**
   * 隶属场景id:
   */
  @ApiModelProperty("隶属场景id")
  private String subjectionSceneId;

  /**
   * 隶属联盟应用ID:
   */
  @ApiModelProperty("隶属联盟应用ID")
  private String subjectionAppId;

  /**
   * 空间简称:
   */
  @ApiModelProperty("空间简称")
  private String abbreviation;

  /**
   * 空间标识:
   */
  @ApiModelProperty("空间标识")
  private String spaceCode;

  /**
   * 创建于联盟应用ID
   */
  @ApiModelProperty("隶属联盟应用ID")
  private String appId;

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    FrameworkSpaceDto that = (FrameworkSpaceDto) o;
    return (
      spaceId == that.spaceId &&
      spaceName == that.spaceName &&
      spaceLogo == that.spaceLogo &&
      organizationNumber == that.organizationNumber &&
      platformType == that.platformType &&
      isInvalid == that.isInvalid &&
      createInductionId == that.createInductionId &&
      createTime == that.createTime &&
      subjectionSceneId == that.subjectionSceneId &&
      subjectionAppId == that.subjectionAppId &&
      abbreviation == that.abbreviation &&
      spaceCode == that.spaceCode &&
      appId == that.appId
    );
  }

  @Override
  public int hashCode() {
    return Objects.hash(
      super.hashCode(),
      spaceId,
      spaceName,
      spaceLogo,
      organizationNumber,
      platformType,
      isInvalid,
      createInductionId,
      createTime,
      subjectionSceneId,
      subjectionAppId,
      abbreviation,
      spaceCode,
      appId
    );
  }
}
